Caching (In-memory, Distributed Caching) ব্যবহার

Microsoft Technologies - এএসপি ডট নেট কোর (ASP.Net Core) Performance Optimization Techniques |
281
281

Caching হলো একটি পদ্ধতি যার মাধ্যমে ডেটা সঞ্চিত করা হয়, যাতে পরবর্তীতে সেই ডেটা দ্রুত পাওয়া যায়। ASP.NET Core-এ দুটি প্রধান ধরনের ক্যাশিং ব্যবহৃত হয়: In-memory caching এবং Distributed caching। ক্যাশিং ব্যবহারের মূল উদ্দেশ্য হল অ্যাপ্লিকেশনের পারফরম্যান্স উন্নত করা এবং সিস্টেমের প্রতিক্রিয়া সময় (response time) কমানো।

Caching কী?

Caching হল ডেটা স্টোর করার একটি প্রক্রিয়া যেখানে একবার ডেটা প্রাপ্তির পর সেটি সঞ্চিত (store) করা হয়। পরবর্তীতে একই ডেটা আবার পুনরায় প্রাপ্ত করার সময় ক্যাশ থেকে ডেটা সরাসরি পাওয়া যায়, যা সাধারণ ডাটাবেস বা ফাইল সিস্টেমের তুলনায় অনেক দ্রুত হয়। ASP.NET Core ক্যাশিং এর জন্য In-memory Caching এবং Distributed Caching সমর্থন করে।


In-memory Caching

In-memory Caching হচ্ছে একটি ক্যাশিং পদ্ধতি যেখানে ডেটা অ্যাপ্লিকেশনের মেমরিতে সঞ্চিত হয়। এটি সাধারনত ছোট অ্যাপ্লিকেশন বা যেসব অ্যাপ্লিকেশন একটিমাত্র সার্ভারে রান করে তাদের জন্য উপযুক্ত। এই ক্যাশে ডেটা যখন একবার অ্যাক্সেস করা হয়, তখন তা অ্যাপ্লিকেশনের মেমরিতে সঞ্চিত হয় এবং পরবর্তী রিকোয়েস্টে খুব দ্রুত পাওয়া যায়।

In-memory Caching কনফিগারেশন

ASP.NET Core-এ In-memory Caching ব্যবহার করতে হলে, প্রথমে Startup.cs বা Program.cs-এ AddMemoryCache() মেথডটি যুক্ত করতে হবে।

Program.cs ফাইল কনফিগারেশন:

var builder = WebApplication.CreateBuilder(args);

// In-memory cache সার্ভিস যোগ করা
builder.Services.AddMemoryCache();

var app = builder.Build();

// ইন-মেমরি ক্যাশ ব্যবহার করতে প্রয়োজনীয় মিডলওয়্যার এবং অন্যান্য কনফিগারেশন
app.MapGet("/", (IMemoryCache cache) =>
{
    // ক্যাশ চেক করা
    if (!cache.TryGetValue("Time", out string time))
    {
        time = DateTime.Now.ToString();
        // ক্যাশে ডেটা যোগ করা
        cache.Set("Time", time, TimeSpan.FromMinutes(5));
    }
    
    return time;
});

app.Run();

এই উদাহরণে:

  • IMemoryCache সার্ভিসটি ইনজেক্ট করা হয়েছে এবং ক্যাশ চেক করা হচ্ছে।
  • যদি ক্যাশে ডেটা না থাকে, তবে সেটি সঞ্চিত করা হচ্ছে এবং ৫ মিনিটের জন্য মেয়াদ নির্ধারণ করা হচ্ছে।

Distributed Caching

Distributed Caching এমন একটি ক্যাশিং সিস্টেম, যেখানে ডেটা একাধিক সার্ভারে সঞ্চিত হয় এবং বিভিন্ন সার্ভার থেকে অ্যাক্সেস করা যায়। এটি মূলত বড় অ্যাপ্লিকেশন, ক্লাউড অ্যাপ্লিকেশন, বা এমনকি ক্লাস্টার করা সার্ভার ইনফ্রাস্ট্রাকচারের জন্য উপযুক্ত। Redis এবং NCache জনপ্রিয় distributed cache সিস্টেম।

Distributed Caching কনফিগারেশন

ASP.NET Core-এ Distributed Caching ব্যবহার করতে হলে, সাধারণত Redis বা SQL Server ব্যবহার করা হয়। নিচে Redis ক্যাশ কনফিগারেশনের উদাহরণ দেওয়া হল:

Redis Caching কনফিগারেশন

প্রথমে, Redis NuGet প্যাকেজ ইন্সটল করুন:

dotnet add package Microsoft.Extensions.Caching.StackExchangeRedis

Program.cs ফাইল কনফিগারেশন:

var builder = WebApplication.CreateBuilder(args);

// Redis Caching সার্ভিস যোগ করা
builder.Services.AddStackExchangeRedisCache(options =>
{
    options.Configuration = "localhost:6379"; // Redis সার্ভারের কনফিগারেশন
    options.InstanceName = "SampleApp:";
});

var app = builder.Build();

app.MapGet("/", (IDistributedCache cache) =>
{
    var cacheKey = "Time";
    string time = cache.GetString(cacheKey);

    if (string.IsNullOrEmpty(time))
    {
        time = DateTime.Now.ToString();
        // Redis ক্যাশে ডেটা সঞ্চয় করা
        cache.SetString(cacheKey, time, new DistributedCacheEntryOptions()
        {
            AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(5)
        });
    }

    return time;
});

app.Run();

এই উদাহরণে:

  • Redis ক্যাশ ব্যবহার করে ডেটা সঞ্চিত করা হচ্ছে।
  • SetString() মেথডের মাধ্যমে ডেটা ক্যাশে সঞ্চিত হচ্ছে এবং GetString() মেথডের মাধ্যমে ডেটা পাওয়া যাচ্ছে।
  • DistributedCacheEntryOptions এর মাধ্যমে ক্যাশের মেয়াদ নির্ধারণ করা হচ্ছে।

Caching ব্যবহার করার সুবিধা

  1. পারফরম্যান্স বৃদ্ধি: ক্যাশিং ডেটার প্রাপ্তির সময় কমিয়ে আনে এবং অ্যাপ্লিকেশনকে দ্রুততর করে তোলে।
  2. ডেটাবেস লোড কমানো: বারবার একই ডেটা ডাটাবেস থেকে পড়ার পরিবর্তে ক্যাশ ব্যবহার করলে ডাটাবেসে লোড কমে।
  3. স্কেলেবল সিস্টেম: Distributed caching ব্যবহারের মাধ্যমে অ্যাপ্লিকেশন স্কেলিং আরও সহজ হয়, কারণ একাধিক সার্ভার থেকে ক্যাশ শেয়ার করা সম্ভব।

Caching এর চ্যালেঞ্জ

  1. ডেটার সততা: ক্যাশে সঞ্চিত ডেটা প্রায়শই পুরানো হতে পারে, তাই ডেটার সততা রক্ষা করা কঠিন হতে পারে।
  2. Memory Consumption: In-memory caching ব্যবহারে মেমরি ব্যবহারের জন্য মনোযোগ দিতে হয়।
  3. Cache Invalidation: ক্যাশের ডেটা কখন invalidate বা clear করতে হবে, তা ঠিক করা জরুরি।

সারাংশ

ASP.NET Core অ্যাপ্লিকেশনগুলিতে In-memory Caching এবং Distributed Caching ব্যবহারের মাধ্যমে পারফরম্যান্স বাড়ানো সম্ভব। In-memory caching ছোট এবং সহজ অ্যাপ্লিকেশনগুলির জন্য উপযুক্ত, যেখানে ডিস্ট্রিবিউটেড ক্যাশিং বড়, ক্লাউড-বেসড অ্যাপ্লিকেশনগুলির জন্য আদর্শ। Redis বা NCache ব্যবহারের মাধ্যমে ডিস্ট্রিবিউটেড ক্যাশ পরিচালনা করা সম্ভব। ক্যাশিং অ্যাপ্লিকেশনের প্রতিক্রিয়া সময় কমানোর জন্য একটি গুরুত্বপূর্ণ প্রযুক্তি।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion